package ru.ifmo.thesis.gp;

import ru.ifmo.thesis.quantities.Percent;

public class MyConfigurationOptions {
	private int ofPopulation;
	private Percent takePercentToNewPopulation;
	private int movingsPerMutation;
	private double mutationPercent;
	private boolean isPopSizeConstant;
	private int populationSizeGuaranteed;
	private boolean naturalSelectorBeforeGenOperators;
	private boolean allowDoubletteChromosomes;
	private int swappingRate;
	private Percent selectFromPrevGen;
	private Percent crossoverRate;

	MyConfigurationOptions(Percent takePercentToNewPopulation,
			int movingsPerMutation, double mutationPercent,
			boolean isPopSizeConstant, int populationSizeGuaranteed,
			boolean naturalSelectorBeforeGenOperators,
			boolean allowDoubletteChromosomes, int swappingRate,
			Percent selectFromPrevGen, int ofPopulation, Percent crossoverRate) {
		this.takePercentToNewPopulation = takePercentToNewPopulation;
		this.movingsPerMutation = movingsPerMutation;
		this.mutationPercent = mutationPercent;
		this.isPopSizeConstant = isPopSizeConstant;
		this.populationSizeGuaranteed = populationSizeGuaranteed;
		this.naturalSelectorBeforeGenOperators = naturalSelectorBeforeGenOperators;
		this.allowDoubletteChromosomes = allowDoubletteChromosomes;
		this.swappingRate = swappingRate;
		this.selectFromPrevGen = selectFromPrevGen;
		this.ofPopulation = ofPopulation;
		this.crossoverRate = crossoverRate;
	}

	public int getMovingsPerMutation() {
		return movingsPerMutation;
	}

	public double getMutationPercent() {
		return mutationPercent;
	}

	public int getPopulationSizeGuaranteed() {
		return populationSizeGuaranteed;
	}

	public Percent getSelectFromPrevGen() {
		return selectFromPrevGen;
	}

	public int getSwappingRate() {
		return swappingRate;
	}

	public Percent getTakePercentToNewPopulation() {
		return takePercentToNewPopulation;
	}

	public int getOfPopulation() {
		return ofPopulation;
	}
	
	public boolean isAllowDoubletteChromosomes() {
		return allowDoubletteChromosomes;
	}

	public boolean isNaturalSelectorBeforeGenOperators() {
		return naturalSelectorBeforeGenOperators;
	}

	public boolean isPopSizeConstant() {
		return isPopSizeConstant;
	}

	public void setAllowDoubletteChromosomes(boolean allowDoubletteChromosomes) {
		this.allowDoubletteChromosomes = allowDoubletteChromosomes;
	}

	public void setMovingsPerMutation(int movingsPerMutation) {
		this.movingsPerMutation = movingsPerMutation;
	}

	public void setMutationPercent(double mutationPercent) {
		this.mutationPercent = mutationPercent;
	}

	public void setNaturalSelectorBeforeGenOperators(
			boolean naturalSelectorBeforeGenOperators) {
		this.naturalSelectorBeforeGenOperators = naturalSelectorBeforeGenOperators;
	}

	public void setPopSizeConstant(boolean isPopSizeConstant) {
		this.isPopSizeConstant = isPopSizeConstant;
	}

	public void setPopulationSizeGuaranteed(int populationSizeGuaranteed) {
		this.populationSizeGuaranteed = populationSizeGuaranteed;
	}

	public void setSelectFromPrevGen(Percent selectFromPrevGen) {
		this.selectFromPrevGen = selectFromPrevGen;
	}

	public void setSwappingRate(int swappingRate) {
		this.swappingRate = swappingRate;
	}

	public void setTakePercentToNewPopulation(Percent takePercentToNewPopulation) {
		this.takePercentToNewPopulation = takePercentToNewPopulation;
	}
	
	public void setOfPopulation(int ofPopulation) {
		this.ofPopulation = ofPopulation;
	}
	
	public void setCrossoverRate(Percent crossoverRate) {
		this.crossoverRate = crossoverRate;
	}
	
	public Percent getCrossoverRate() {
		return crossoverRate;
	}
}